package com.atguigu.srb.core.controller.api;

import com.alibaba.fastjson.JSON;
import com.atguigu.srb.base.exception.BusinessException;
import com.atguigu.srb.base.response.R;
import com.atguigu.srb.base.response.ResponseEnum;
import com.atguigu.srb.base.util.IpUtils;
import com.atguigu.srb.base.util.JwtUtils;
import com.atguigu.srb.common.util.HttpClientUtils;
import com.atguigu.srb.core.pojo.entity.UserInfo;
import com.atguigu.srb.core.pojo.entity.UserLoginRecord;
import com.atguigu.srb.core.service.UserInfoService;
import com.atguigu.srb.core.service.UserLoginRecordService;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Map;
import java.util.UUID;

@Api(tags = "微信登录模块")
@Controller
@RequestMapping("/api/wx")
@Slf4j
public class ApiWxLoginController {
    @Resource
    UserInfoService userInfoService;
    @Resource
    UserLoginRecordService userLoginRecordService;

    @GetMapping("set")
    @ResponseBody
    public R set(HttpSession session){
        session.setAttribute("k1","v1");
        return R.ok();
    }
    @GetMapping("get")
    @ResponseBody
    public R get(HttpSession session){
        return R.ok().data("k1",session.getAttribute("k1"));
    }


    /**
     * springmvc的接口
     *      响应结果有两种处理方式：
     *          1、视图解析器解析为视图
     *              转发视图、重定向视图
     *          2、转json
     * 用户访问当前接口可以获取到wx的获取二维码图片的接口地址 重定向
     *  1、登录页面中点击wx图片时 访问当前接口
     *  2、拼接一个wx平台获取二维码图片的接口地址
     *  3、重定向响应
     * @return
     */
    @ApiOperation("微信登录接口:获取登录二维码")
    @GetMapping("login")
    public String wxLogin(HttpSession session){
        return userInfoService.wxLogin(session);
    }

    /**
     * 当前接口是用户扫码授权后
     * 浏览器回调访问的接口
     * 应该给用户响应登录成功的页面，回显登录信息(wx数据)
     * @return
     */
    @ApiOperation("wx登录,用户授权的回调接口")
    @GetMapping("callback")
    public String callback(String code, String state, HttpServletRequest request,
                           HttpSession session){
        return userInfoService.callback(code,state,request,session);
    }
}
